/*
 * @lc app=leetcode.cn id=347 lang=javascript
 *
 * [347] 前 K 个高频元素
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number[]}
 */
var topKFrequent = function (nums, k) {
  let hash=new Map()
  let arr=[]
  let res=[]
  for(let i=0;i<nums.length;i++){
    if(hash.has(nums[i])){
      hash.set(nums[i],hash.get(nums[i])+1)
    }else{
      hash.set(nums[i],1)
    }
  }
  if(hash.size<=k){
    return [...hash.keys()]
  }
  hash.forEach((v,k)=>{
    if(arr[v]){
      arr[v].push(k)
    }else{
      arr[v]=[k]
    }
  })
  for(let i=arr.length-1;i>=0;i--){
    if(arr[i]){
      res.push(...arr[i])
      if(res.length===k)return res
    }
  }
};
// @lc code=end
topKFrequent([3,0,1,0],1)